/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package aqu.controlador;

import aqu.bean.generico.BeanGenerico;
import aqu.persistencia.Dao.Administracion.SegGlobalManager;
import aqu.persistencia.Dao.LivroManager;
import aqu.persistencia.Dao.Administracion.SegUsuarioManager;
import aqu.persistencia.entity.Livro;
import aqu.persistencia.entity.SegGlobal;
import aqu.persistencia.entity.SegUsuario;
import aqu.persistencia.utilidad.MessagesController;
import aqu.persistencia.utilidad.UrlNodeUserObject;
import com.icesoft.faces.component.ext.RowSelectorEvent;
import com.icesoft.faces.context.effects.JavascriptContext;
import com.icesoft.faces.utils.AddResource;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.swing.tree.DefaultMutableTreeNode;

/**
 *
 * @author José Alexandre
 */
@ManagedBean
@SessionScoped
public class LoginController extends BeanGenerico {

    private SegUsuario usuario;
    private List<SegUsuario> lista;
     private List<SegGlobal> listaglobal;
    private SegUsuarioManager segUsuarioManager = new SegUsuarioManager();
    private SegGlobalManager SegGlobalManager = new SegGlobalManager();
    HashMap variables = new HashMap();
    private Date fecha = new Date();
    private String ventana = "login.jsf";

    public String getVentana() {
        if (usuario.getSegLoginUsu() != null) {
            ventana = "index.jsf";
        } else {


            ventana = "login.jsf";

        }
        return ventana;
    }

    public void setVentana(String ventana) {
        this.ventana = ventana;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public LoginController() {

        usuario = new SegUsuario();
        listaglobal=SegGlobalManager.getList();
        //guarda las variables para ser usadas en el sistema
        for(int i=0;i<listaglobal.size();i++){
            variables.put(listaglobal.get(i).getSegNomVariable(),listaglobal.get(i).getSegValorVariable());
            
        }
        
    }

    public List<SegUsuario> getLista() {
        lista = segUsuarioManager.getList();
        return lista;
    }

    public void setLista(List<SegUsuario> lista) {
        this.lista = lista;
    }

    public SegUsuarioManager getLivromanager() {
        return segUsuarioManager;
    }

    public void setLivromanager(SegUsuarioManager segUsuarioManager) {
        this.segUsuarioManager = segUsuarioManager;
    }

    public SegUsuario getUsuario() {
        return usuario;
    }

    public void setUsuario(SegUsuario usuario) {
        this.usuario = usuario;
    }

    public List<SegGlobal> getListaglobal() {
        return listaglobal;
    }

    public void setListaglobal(List<SegGlobal> listaglobal) {
        this.listaglobal = listaglobal;
    }

    public HashMap getVariables() {
        return variables;
    }

    public void setVariables(HashMap variables) {
        this.variables = variables;
    }

    public String validarusuario() {
        SegUsuario user = null;
        try {
            MessagesController.addInfo("Cargando.....");

            user = segUsuarioManager.buscarporLogin(usuario.getSegLoginUsu());
        } catch (Exception e) {
            MessagesController.addError(
                    "problemas para identificar el usuario: intente mas tarde",
                    e.getMessage());

        }
        if (user == null) {

            MessagesController.addError("Usuario no encontrado ", "Usuário:<b>"
                    + usuario.getSegLoginUsu() + "</b> en la base de datos");
            llamarPanelpopupvisible(null);
            return null;
        } else {
            if (user.getSegPasswordUsu().equalsIgnoreCase(usuario.getSegPasswordUsu())) {// login
                // FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("user", user); // somente esse bean
                //NavigarionController nc = (NavigarionController)
                //FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("navigationBean");
                // nc.setCurrentState(nc.getHOME_STATE());
                //root = new DefaultTreeNode("root", null);
                //LlenarMenu("-", null);
                //  MessagesController.addError("Password Correcta ","Password Correcta");
                //  llamarPanelpopupvisible(null);
                return "/index";//"paginas/principal.xhtml?faces-redirect=true";
            } else {
                // tentativas++;//se errar 3 vezes mostrar Captcha
                MessagesController.addError("Password Incorreta ",
                        "Password Incorreta, verifique su password");
                llamarPanelpopupvisible(null);
                return null;
            }
        }
    }

    public void eventoenter(ActionEvent a) {
        String localeCode = "";
        localeCode = "";
    }

    public String Salir() throws IOException {
        //final HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        //request.getSession(false).invalidate();
        //FacesContext.getCurrentInstance().getExternalContext().redirect("/MovieCollector");
        /*FacesContext context = FacesContext.getCurrentInstance();
        
        ExternalContext externalContext = context.getExternalContext();
        
        Object session = externalContext.getSession(false);
        
        HttpSession httpSession = (HttpSession) session;
        
        httpSession.invalidate(); */
        /*FacesContext context = FacesContext.getCurrentInstance();
        context.getExternalContext().getSessionMap().remove("nombreDelBeanEnSesion"); */

        FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
        return "login.xhtml?faces-redirect=true";

    }

    public void validarUsuarioLogin() {
        String retorno = null;
        if (usuario.getSegLoginUsu() == null) {
             retorno = "login.jsf";
             
        } else {
            if (usuario.getSegLoginUsu().equals("")) {
                retorno = "login.jsf";
            } else {

                retorno = "index.jsf";
            }

        }

        JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), "window.open('" + retorno + "','titulo','width=screen.availWidth','height=screen.availHeight');");

    }
    public  String obtenervariable(String nombrevarible) {
       return getVariables().get(nombrevarible).toString();
    }
}
